package com.guigu.qingcheng.service;

import com.guigu.qingcheng.pojo.TbOrder;
import com.guigu.qingcheng.pojo.TbReturnOrder;
import com.guigu.qingcheng.pojo.dto.OrderItemSku;
import com.guigu.qingcheng.pojo.vo.CloseOrderVo;
import com.guigu.qingcheng.pojo.vo.OrderHeBinVo;
import com.guigu.qingcheng.pojo.TbOrderItem;
import com.guigu.qingcheng.pojo.vo.CategoryReportVo;
import com.guigu.qingcheng.utils.PageUtil;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;


/**
*
* @author Jiang
* @date 2020/07/31
*/
public interface TbOrderService {

    /**
     * 订单统计
     * @return
     */
     List<Map> orders(CategoryReportVo categoryReportVo);
    /**
     * 查询待付款的订单
     */
    Map Queryorderstatus(Integer status);

    /**
     * 查询今日订单总数
     */
    Map findtodayOrder(LocalDate localDate);

    /**
    * 查询所有
    */
    List<TbOrder> queryAll();

    /**
    * 分页查询所有
    */
    PageUtil<TbOrder> findListAll(Integer pageNum, Integer pageSize);


    /**
    * 按条件分页查询
    */
    PageUtil<TbOrder> pageQueryByAll(Integer pageNum, Integer pageSize, TbOrder tbOrder);


    /**
    * 添加
    */
    boolean saveTbOrder(TbOrder tbOrder);


    /**
    * 修改
    */
    boolean updateTbOrder(TbOrder tbOrder);

    /**
    * 删除
    */
    boolean deleteById(Integer id);


    /**
    * 根据id查询
    */
    TbOrder findById(String id);

    /**
     * 按ids条件分页查询
     */
    List<TbOrder> pageQueryIdsByAll(String ids);

    void batchSend(List<TbOrder> tbOrders);

    /**
     * 合并订单
     * @param orderHeBinVo
     */
    void heBin(OrderHeBinVo orderHeBinVo);

    /**
     * 关闭订单
     * @param closeOrderVo
     */
    void closeOrder(CloseOrderVo closeOrderVo);

    /**
     * 取消订单
     * @param tbReturnOrder
     */
    void quxiaoDD(TbReturnOrder tbReturnOrder);

    /**
     * 自定义方法查询 订单、订单明细、商品表 三表查询 前端我的订单数据 并分页
     * @param username
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageUtil<OrderItemSku> queryOrderItemSkuByUsername(String username, Integer pageNum, Integer pageSize,Integer orderStatus);

    /**
     * 通过订单Id 获取到 订单、订单明细、商品表 三表查询 的数据
     * @param id
     * @return
     */
    OrderItemSku queryOrderItemSkuByOrderId(String id);

    /**
     * 添加订单
     */
    Map<String,Object> addTbOrder(TbOrder tbOrder);

    /**
     * 付款成功修改订单状态
     * @param orderId
     * @param transaction
     */
    void updatePayStatus(String orderId, String transaction);

    /**
     * 订单确认收货 已完成订单
     * @param id
     */
    void okOrder(String id);
}
